﻿using System;
using System.Linq;
using System.Windows.Forms;
using ProyectoActivos.Daos;
using ProyectoActivos.Util;
using ProyectoActivos.Validate;

namespace ProyectoActivos.Forms.Consultas
{
    public partial class FrmConsultaInventarioFechaActualAcumulado : Form,IValidateForm
    {
        private bool _valido;

        public static FrmConsultaInventarioFechaActualAcumulado Activo;

        public FrmConsultaInventarioFechaActualAcumulado()
        {
            InitializeComponent();
            Activo = this;
            _valido = true;
            dGridResultado.AutoGenerateColumns = false;
        }

        private void FrmConsultaInventarioFinMes_Load(object sender, EventArgs e)
        {
            
        }
        
        private void FrmConsultaInventarioFinMes_FormClosing(object sender, FormClosingEventArgs e)
        {
            Activo = null;
        }

        public void Invalid()
        {
            _valido = false;
        }

        public bool IsValid()
        {
            return _valido;
        }

        private void tStripButtonExportarAExcel_Click(object sender, EventArgs e)
        {
            if (dGridResultado.Rows.Count > 0)
            {
                ActionExecutor.Execute(this, () => ExcelUtils.ExportarGridAExcel(dGridResultado));
            }
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            _valido = true;
            errorProvider.Clear();
            ActionExecutor.Execute(this, delegate
            {
                var date = DateTime.Now;
                var resultado = new ConsultasDAO().ObtenerConsultaInventario(date);
                var query = from r in resultado
                            group r by new
                            {
                                r.NombreFamilia,
                                r.NombreSubFamilia,
                                r.CodigoArticulo,
                                r.DescripcionArticulo,
                                r.Marca,
                                r.Modelo,
                                r.Serie,
                                r.NombreCondicionEquipo
                            } into g
                            select new
                            {
                                g.Key.NombreFamilia,
                                g.Key.NombreSubFamilia,
                                g.Key.CodigoArticulo,
                                g.Key.DescripcionArticulo,
                                g.Key.Marca,
                                g.Key.Modelo,
                                g.Key.Serie,
                                Cantidad = g.Sum(r => r.Cantidad),
                                g.Key.NombreCondicionEquipo
                            };
                dGridResultado.DataSource = query.ToList();
            });
        }
        
    }
}
